Saltar al contenido principal

02.05 - Método de transformada inversa

Modelos de Simualción


1. Transformada Inversa

El método de la transformada inversa puede utilizarse para simular variables aleatorias continuas, lo cual se logra mediante la función acumulada F(x) y la generación de números pseudoaleatorios ri U(0,1)r_i~ U (0 ,1). El método consiste en:

  1. Definir la función de densidad F(x)F(x) que represente la variable a modelar.
  2. Calcular la función acumulada F(x)F(x).
  3. Despejar la variable aleatoria x y obtener la función acum ulada inversa F(x)1F(x)^-1
  4. Generar las variables aleatorias x, sustituyendo valores con números pseudoaleatorios ri U(0,1)r_i ~U(0,1) en la función acum ulada inversa

El método de la transformada inversa también puede emplearse para simular variables aleatorias de tipo discreto, como en las distribuciones de Poisson, de Bernoulli, binomial, geométrica, discreta general, etcétera. La generación se lleva a cabo a través de la probabilidad acumulada P(x) y la generación de números pseudoaleatorios ri U(0,1)r_i ~U(0,1). El métotdo consiste en:

  1. Calcular todos los valores de la distribución de probabilidad p(x) de la variable a modelar.
  2. Calcular todos los valores de la distribución acumulada P(x).
  3. Generar números pseudoaleatorios ri U(0,1)r_i ~U(0,1).
  4. Comparar con el valor de P(x) y determinar qué valor de x corresponde a P(x).

Transformada inversa de las principales distribuciones

Distribución uniforme

La función acumulada de la distribución uniforme U(a,b)U(a,b) es:

F(x)={0,x<axaba,ax<b1,xbF(x) = \begin{cases} 0, & x < a \\ \frac{x-a}{b-a}, & a \leq x < b \\ 1, & x \geq b \end{cases}

La función acumulada inversa es:

F1(u)=a+u(ba)F^{-1}(u) = a + u(b-a)


Para generar un valor aleatorio XX a partir de una distribución uniforme U(2,5)U(2,5), se sigue el siguiente procedimiento:

  1. Generar un valor aleatorio UU a partir de una distribución uniforme U(0,1)U(0,1).
  2. Aplicar la transformada inversa: X=F1(U)=2+U(52)=2+3UX = F^{-1}(U) = 2 + U(5-2) = 2 + 3U.

Distribución exponencial

La función acumulada de la distribución exponencial Exp(λ)Exp(\lambda) es:

F(x)={0,x<01eλx,x0F(x) = \begin{cases} 0, & x < 0 \\ 1-e^{-\lambda x}, & x \geq 0 \end{cases}

La función acumulada inversa es:

F1(u)=ln(1u)λF^{-1}(u) = -\frac{\ln(1-u)}{\lambda}


Para generar un valor aleatorio XX a partir de una distribución exponencial Exp(0.5)Exp(0.5), se sigue el siguiente procedimiento:

  1. Generar un valor aleatorio UU a partir de una distribución uniforme U(0,1)U(0,1).
  2. Aplicar la transformada inversa: X=F1(U)=ln(1U)0.5X = F^{-1}(U) = -\frac{\ln(1-U)}{0.5}.

Distribución normal estándar

La función acumulada de la distribución normal estándar N(0,1)N(0,1) es:

F(x)=12πxet2/2dtF(x) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{x} e^{-t^2/2} dt

No existe una fórmula cerrada para la función acumulada inversa de la distribución normal estándar. Sin embargo, se puede utilizar el método de Box-Muller para generar valores aleatorios a partir de esta distribución.


El método de Box-Muller consiste en generar dos valores aleatorios U1U_1 y U2U_2 a partir de una distribución uniforme U(0,1)U(0,1) y aplicar las siguientes transformaciones:

Z1=2lnU1cos(2πU2)Z_1 = \sqrt{-2\ln U_1}\cos(2\pi U_2)

Z2=2lnU1sin(2πU2)Z_2 = \sqrt{-2\ln U_1}\sin(2\pi U_2)

Los valores Z1Z_1 y Z2Z_2 generados son independientes y tienen una distribución normal estándar.


Para generar un valor aleatorio XX a partir de una distribución normal estándar N(0,1)N(0,1), se sigue el siguiente procedimiento:

  1. Generar dos valores aleatorios U1U_1 y U2U_2 a partir de una distribución uniforme U(0,1)U(0,1).

  2. Aplicar las transformaciones del método de Box-Muller:

    Z1=2lnU1cos(2πU2)Z_1 = \sqrt{-2\ln U_1}\cos(2\pi U_2) Z2=2lnU1sin(2πU2)Z_2 = \sqrt{-2\ln U_1}\sin(2\pi U_2)

  3. Utilizar uno de los valores generados como el valor aleatorio deseado: X=Z1X = Z_1 o X=Z2X = Z_2.


Distribución binomial

La función acumulada de la distribución binomial Bin(n,p)Bin(n,p) es:

F(x)=k=0x(nk)pk(1p)nkF(x) = \sum_{k=0}^{x} {n \choose k} p^k (1-p)^{n-k}

No existe una fórmula cerrada para la función acumulada inversa de la distribución binomial. Sin embargo, se puede utilizar el método de la transformada inversa para generar valores aleatorios a partir de esta distribución.


El método de la transformada inversa consiste en aplicar la fórmula general de la transformada inversa:

X=F1(U)X = F^{-1}(U)

donde UU es un valor aleatorio generado a partir de una distribución uniforme U(0,1)U(0,1) y F1F^{-1} es la función acumulada inversa correspondiente a la distribución deseada.


Para generar un valor aleatorio XX a partir de una distribución binomial Bin(10,0.3)Bin(10,0.3), se sigue el siguiente procedimiento:

  1. Generar un valor aleatorio UU a partir de una distribución uniforme U(0,1)U(0,1).
  2. Calcular los valores acumulados hasta que se cumpla que F(k)>UF(k) > U, donde kk es el menor entero tal que se cumple esta condición:

F(0)=0.0282F(0) = 0.0282 F(1)=0.1673F(1) = 0.1673 F(2)=0.3839F(2) = 0.3839 F(3)=0.6478F(3) = 0.6478 F(4)=0.8312F(4) = 0.8312 F(5)=0.9326F(5) = 0.9326 F(6)=0.9805F(6) = 0.9805 F(7)=0.9962F(7) = 0.9962 F(8)=0.9997F(8) = 0.9997 F(9)=1F(9) = 1 F(10)=1F(10) = 1

  1. Utilizar el valor de kk encontrado como el valor aleatorio deseado: X=kX = k.

Distribución de Bernoulli

La función acumulada de la distribución de Bernoulli Bern(p)Bern(p) es:

F(x)={0,x<01p,0x<11,x1F(x) = \begin{cases} 0, & x < 0 \\ 1-p, & 0 \leq x < 1 \\ 1, & x \geq 1 \end{cases}

La función acumulada inversa es:

F1(u)={0,u<1p1,u1pF^{-1}(u) = \begin{cases} 0, & u < 1-p \\ 1, & u \geq 1-p \end{cases}


Para generar un valor aleatorio XX a partir de una distribución de Bernoulli Bern(0.6)Bern(0.6), se sigue el siguiente procedimiento:

  1. Generar un valor aleatorio UU a partir de una distribución uniforme U(0,1)U(0,1).

  2. Aplicar la transformada inversa:

    X=F1(U)={0,U<0.41,U0.4X = F^{-1}(U) = \begin{cases} 0, & U < 0.4 \\ 1, & U \geq 0.4 \end{cases}


Ejemplo con distribución Exponencial

La función acumulada de la distribución exponencial Exp(λ)Exp(\lambda) es:

F(x)={0,x<01eλx,x0F(x) = \begin{cases} 0, & x < 0 \\ 1-e^{-\lambda x}, & x \geq 0 \end{cases}

La función acumulada inversa es:

F1(u)=ln(1u)λF^{-1}(u) = -\frac{\ln(1-u)}{\lambda}


Para generar un valor aleatorio XX a partir de una distribución exponencial Exp(0.5)Exp(0.5), se sigue el siguiente procedimiento:

  1. Generar un valor aleatorio UU a partir de una distribución uniforme U(0,1)U(0,1).

  2. Aplicar la transformada inversa:

    X=F1(U)=ln(1U)0.5X = F^{-1}(U) = -\frac{\ln(1-U)}{0.5}

Por ejemplo, si generamos un valor aleatorio U=0.3U=0.3, entonces:

X=ln(10.3)0.50.693X = -\frac{\ln(1-0.3)}{0.5} \approx 0.693

Este valor aleatorio tiene una distribución exponencial con parámetro λ=0.5\lambda=0.5. Podemos repetir este proceso para generar tantos valores aleatorios como necesitemos para nuestro análisis estadístico.